home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: Greatest Hits 1996 / Amiga Games: Greatest Hits 1996.iso / archive / userbox / publicdomain / addicon.lha / AddIcon / AddIcon.s < prev    next >
Text File  |  1996-03-01  |  5KB  |  285 lines

  1.  
  2. ;*************************************
  3. ;*                                   *
  4. ;* program: AddIcon                  *
  5. ;* author:  ScoTT/Inferno & S2B      *
  6. ;*          (Marcin Ochocki)         *
  7. ;* version: 1.1                      *
  8. ;* date:    25.04.96                 *
  9. ;* short:   this is small but useful *
  10. ;*          DOS command to adding    *
  11. ;*          icons to your files,     *
  12. ;*          dirs or devs.            *
  13. ;* greetz:  all Inferno and blabla   *
  14. ;*          members and all my       *
  15. ;*          friends !!!              *
  16. ;*                                   *
  17. ;*************************************
  18.  
  19. Start
  20. ;--------------------------- skopiowanie parametrów pod etykiety
  21.     move.l    d0,d5
  22.     movea.l    a0,a5
  23.     subq.l    #1,d5
  24.     beq    usage
  25.  
  26.     cmp.b    #'"',(a5)
  27.     beq    cudzyslow
  28.  
  29.     lea    filename,a4
  30. copy_filename
  31.     move.b    (a5)+,(a4)+
  32.     cmp.b    #$0a,(a5)
  33.     beq    usage
  34.     cmp.b    #$20,(a5)
  35.     bne    copy_filename
  36.     move.b    #0,(a4)
  37.     addi    #1,a5
  38.     cmp.b    #$0a,(a5)
  39.     beq    usage
  40.     lea    icon_name,a4
  41.     bra    copy_iconname
  42.  
  43. cudzyslow    
  44.     lea    filename,a4
  45.     addi    #1,a5
  46. copy_filename2
  47.     move.b    (a5)+,(a4)+
  48.     cmp.b    #$0a,(a5)
  49.     beq    usage
  50.     cmp.b    #'"',(a5)
  51.     bne    copy_filename2
  52.     cmp.b    #'"',1(a5)
  53.     bne    dalej
  54.     addi    #2,a5
  55.     cmp.b    #':',(a4)
  56.     beq    copy_filename2
  57.     move.b    #'/',(a4)+
  58.     bra    copy_filename2
  59. dalej
  60.     move.b    #0,(a4)
  61.     addi    #2,a5
  62.     cmp.b    #$0a,(a5)
  63.     beq    usage
  64.     
  65.     lea    icon_name,a4
  66. copy_iconname
  67.     move.b    (a5)+,(a4)+
  68.     cmp.b    #$0a,(a5)
  69.     bne    copy_iconname
  70.  
  71.     lea    file_icon,a5
  72. copy_info
  73.     move.b    (a5)+,(a4)+
  74.     cmp.b    #0,(a5)
  75.     bne    copy_info
  76.     move.b    #0,(a4)
  77.  
  78. ;--------------------------- otwieramy dos.library
  79.     move.l    4,a6
  80.     lea    dosname,a1
  81.     clr.l    d0
  82.     jsr    -552(a6)    ;OpenLibrary
  83.     tst.l    d0
  84.     beq    exit2dos
  85.     move.l    d0,dosbase
  86.  
  87. ;--------------------------- czy plik/katalog istnieje?
  88.     move.l    dosbase,a6
  89.     move.l    #filename,d1
  90.     move.l    #-2,d2
  91.     jsr    -84(a6)
  92.     tst.l    d0
  93.     beq    close_lib    ;zîa nazwa pliku/katalogu
  94.     move.l    d0,d1
  95.     jsr    -90(a6)
  96. ;--------------------------- sprawdzamy czy plik istnieje
  97. open_file
  98.     move.l    #filename,d1
  99.     move.l    #$3ed,d2
  100.     jsr    -30(a6)    
  101.     tst.l    d0        ; istnieje?
  102.     bne    close
  103. ;--------------------------- jeôli to nie plik to albo katalog albo urzâdzenie
  104.     lea    filename,a4
  105. search    cmp.b    #0,(a4)+
  106.     bne    search
  107.     subi    #2,a4
  108.     cmp.b    #':',(a4)
  109.     bne    katalog
  110.     move.l    #2,dest_type
  111.     bra    open_icon_file
  112. katalog
  113.     move.l    #1,dest_type
  114. close    
  115.     move.l    dosbase,a6
  116.     move.l    d0,d1
  117.     jsr    -36(a6)
  118.  
  119. ;--------------------------- otwieramy plik z ikonâ
  120. open_icon_file
  121.     move.l    dosbase,a6
  122.     move.l    #icon_patch,d1
  123.     move.l    #$3ed,d2
  124.     jsr    -30(a6)    
  125.     tst.l    d0
  126.     beq    close_lib
  127.     move.l    d0,iconhandle    
  128.  
  129. ;--------------------------- jaki dîugi plik z ikonâ
  130.     move.l    iconhandle,d1
  131.     clr.l    d2
  132.     moveq.l    #1,d3        ;offset_end
  133.     jsr    -66(a6)        ;Seek
  134.     move.l    iconhandle,d1
  135.     clr.l    d2
  136.     moveq.l    #-1,d3        ;offset_beginning
  137.     jsr    -66(a6)        ;Seek
  138.     move.l    d0,icon_length
  139.  
  140. ;--------------------------- alokacja pamiëci
  141.     move.l    4,a6
  142.     move.l    icon_length,d0
  143.     move.l    #$10001,d1
  144.     jsr    -198(a6)
  145.     tst.l    d0
  146.     beq    close_file
  147.     move.l    d0,membase
  148.  
  149. ;--------------------------- wczytanie ikony (pliku) do pamiëci
  150.     move.l    iconhandle,d1
  151.     move.l    membase,d2
  152.     move.l    icon_length,d3
  153.     move.l    dosbase,a6
  154.     jsr    -42(a6)        ;read
  155.     tst.l    d0
  156.     beq    close_file
  157.  
  158.     move.l    dosbase,a6    ;zamykamy plik
  159.     move.l    iconhandle,d1
  160.     jsr    -36(a6)
  161. ;--------------------------- otwieramy plik do zapisu ikony
  162.     lea    filename,a4
  163.     lea    dest_filename,a5
  164. copy_name
  165.     move.b    (a4)+,(a5)+
  166.     cmp.b    #0,(a4)
  167.     bne    copy_name
  168.     move.l    dest_type,d1
  169.     cmp.l    #2,d1
  170.     beq    dev
  171.     cmp.l    #1,d1
  172.     beq    kat
  173.  
  174.     lea    file_icon,a4
  175. copy_icon_file
  176.     move.b    (a4)+,(a5)+
  177.     cmp.b    #0,(a4)
  178.     bne    copy_icon_file
  179.     bra    open_dest_file
  180.  
  181. kat
  182.     lea    file_icon,a4
  183.     subi    #1,a5
  184.     cmp.b    #'/',(a5)
  185.     beq    copy_icon_dir
  186.     addi    #1,a5
  187. copy_icon_dir
  188.     move.b    (a4)+,(a5)+
  189.     cmp.b    #0,(a4)
  190.     bne    copy_icon_dir
  191.     bra    open_dest_file
  192.  
  193. dev
  194.     lea    dev_icon,a4
  195. copy_icon_dev
  196.     move.b    (a4)+,(a5)+
  197.     cmp.b    #0,(a4)
  198.     bne    copy_icon_dev
  199.     
  200. open_dest_file
  201.     move.l    dosbase,a6
  202.     move.l    #dest_filename,d1
  203.     move.l    #$3ee,d2
  204.     jsr    -30(a6)    
  205.     tst.l    d0
  206.     beq    free_mem
  207.     move.l    d0,dest_iconhandle    
  208.  
  209. ;--------------------------- zapisujemy ikonë w miejscu przeznaczenia
  210.  
  211.     move.l    dest_iconhandle,d1
  212.     move.l    membase,d2
  213.     move.l    icon_length,d3
  214.     jsr    -48(a6)        ;Write
  215.  
  216. ;--------------------------- zamykamy plik z ikonâ
  217. close_file
  218.     move.l    dosbase,a6
  219.     move.l    dest_iconhandle,d1
  220.     jsr    -36(a6)
  221.  
  222. ;--------------------------- zwalniamy pamiëê
  223. free_mem
  224.     move.l    4,a6
  225.     move.l    membase,a1
  226.     move.l    icon_length,d0
  227.     jsr    -210(a6)
  228.     clr.l    d0
  229.     bra    close_lib
  230.  
  231. ;--------------------------- okienko z "instrukcjâ"
  232. usage
  233.     move.l    4,a6
  234.     lea    dosname(pc),a1
  235.     clr.l    d0
  236.     jsr    -552(a6)    ;OpenLibrary
  237.     tst.l    d0
  238.     beq    exit2dos
  239.     move.l    d0,dosbase
  240.     move.l    dosbase,a6
  241.     
  242.     jsr    -60(a6)
  243.     move.l    d0,windowbase
  244.  
  245.     move.l    #stext,d2    ;druk tekstu
  246.     move.l    #etext-stext,d3
  247.     move.l    dosbase,a6
  248.     move.l    windowbase,d1
  249.     jsr    -48(a6)
  250. ;--------------------------- zamykamy dos.library
  251. close_lib
  252.     move.l      4,a6
  253.     move.l    dosbase,a1
  254.     move.l    4,a6
  255.     jsr    -414(a6)    ;CloseLibrary
  256.  
  257. exit2dos 
  258.     clr.l    d0
  259.     rts
  260.  
  261. ;--------------------------- trochë danych
  262.  
  263. filename    blk.b    200,0
  264. dest_filename    blk.b    200,0
  265. dosname        dc.b    'dos.library',0
  266. dosbase        dc.l    0
  267. iconhandle    dc.l    0
  268. dest_iconhandle
  269.         dc.l    0
  270. icon_length    dc.l    0
  271. membase        dc.l    0
  272. icon_patch    dc.b    'icons:'
  273. icon_name    blk.b    200,0
  274. file_icon    dc.b    '.info',0
  275. dev_icon    dc.b    'Disk.info',0
  276. windowbase    dc.l    0
  277. dest_type    dc.l    0
  278. stext
  279.         dc.b    $0a,$1b,'[33mAddIcon 1.1',$1b,'[0m (c) 1996 by'
  280.         dc.b    ' ScoTT/Inferno & S2B'
  281.         dc.b    $0A
  282.         dc.b    'Usage AddIcon filename iconname (wichout patch'
  283.         dc.b    " and '.info')",$0A,$0A
  284. etext
  285.